"""
最长的倒数循环节

单位分数是指分子为1的分数。分母从2到10的单位分数的十进制表示如下所示：
    1/2= 0.5
    1/3= 0.(3)
    1/4= 0.25
    1/5= 0.2
    1/6= 0.1(6)
    1/7= 0.(142857)
    1/8= 0.125
    1/9= 0.(1)
    1/10= 0.1
这里0.1(6)表示0.166666…，括号内表示有一位的循环节。可知，1/7有六位循环节。
  找出小于1000的正整数d，其倒数的十进制表示的小数部分有最长的循环节。
"""

# 问题化简，首先不是素数的数的循环节长度必定可以由其他数组成比如14可以由2*7组成，
# 那么1/14与1/7有相同的循环节长度，所以只需找出所有的素数不（包括2与5），求的他们的循环节长度。

# 判断素数
def is_prime(n):
    if n == 1:
        return False
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    else:
        return True

# 判断循环小数
def cycle(n):
    if n==2 or n==5:
        return False
    if n%2==0:
        return cycle(n//2)
    if n%5==0:
        return cycle(n//5)
    return True

# 判断循环节长度
def lenth(n):
    l=1
    while(True):
        if (10**l-1)%n==0:
            break
        l+=1
    return l

max_l=0
max_num=0
for i in range(1,1001):
    if is_prime(i) and i!=2 and i!=5:
        if cycle(i):
            if(lenth(i)>max_l):
                max_l=lenth(i)
                max_num=i
print(max_num)
print(max_l)
